自己用來練習的API可以發現到有分成page1,2 ...,
https://triper.darkwing.co/api.php/story/get_story_list/token/5E7aQ3Wpmd9ZkU22/category/all/order/hot/user_id/-1/page/1
,所以必須實現說tableView下拉更新可以更新API的頁數,自己是用JSONDecoder(寫在一個名為downloadArticles的方法,來解析JSON)
func downloadArticles(url:String){
if let url = URL(string: url){
let task = URLSession.shared.dataTask(with: url, completionHandler: { (data, response, error) in
if error != nil{
print(error!.localizedDescription)
}
if let downloadedData = data{
do{
let decoder = JSONDecoder()
let articleData = try decoder.decode(JSONData.self, from: downloadedData)
print(articleData.data.count)
self.dataFromAPI = articleData
DispatchQueue.main.async {
self.tableView.reloadData()
}
}catch{
print("JSON error")
}
}
})
task.resume()
}
}
在ViewDidLoad()裡面寫入:
for i in 1...2{
self.url = "https://triper.darkwing.co/api.php/story/get_story_list/token/5E7aQ3Wpmd9ZkU22/category/all/order/hot/user_id/-1/page/\(i)"
downloadArticles(url: url)
}
結果在運行時,tableView會閃一下換API,但不是接在後面,現在還想不到原因。
在console可以發現有打印出兩次10,所以確實是有抓到的。
你所謂的接在後面是不是指要把page2的data append在dataFromAPI裡而不是直接取代
對喔,但是現在弄不出來,請問您有任何想法嗎? 感謝
關鍵應該在這一行 你要加上去而不是直接取代
self.dataFromAPI = articleData
了解了,謝謝,我再試試